package com.biz.primus.model.member.vo;

import com.biz.primus.base.global.GlobalValue;
import com.biz.primus.base.global.Ref;
import com.biz.primus.model.member.enums.AddressTypes;
import com.biz.primus.model.member.enums.SexTypes;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author jun.liu
 * @date 2017年10月22日
 * @reviewer
 * @see
 */
@ApiModel(description = "vo")
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class MemberAddressVo extends BaseVo
{

    /**
     * 地址别名
     */
    @ApiModelProperty("地址别名")
    private String addressName;

    /**
     * 收货人姓名
     */
    @ApiModelProperty(value = "收货人姓名" ,required = true)
    private String consigneeName;

    /**
     * 收货人电话
     */
    @ApiModelProperty(value = "收货人电话" , required = true)
    private String mobile;

    /**
     * 详细收货地址
     */
    @ApiModelProperty(value = "详细收货地址" ,required = true)
    private String detailAddress;

    @ApiModelProperty(value = "经度", required = true)
    @Ref(GlobalValue.lon)
    private BigDecimal loginLon;

    @ApiModelProperty(value = "纬度", required = true)
    @Ref(GlobalValue.lat)
    private BigDecimal loginLat;

    /**
     * 送达目的地
     */
    @ApiModelProperty("送达目的地")
    private String destination;

    /**
     * （或者是默认地址）
     */
    @ApiModelProperty(value = " （是否默认地址）" , required = true)
    private Boolean defaultAddress;

    /**
     * cityId
     **/
    @ApiModelProperty("cityId")
    @Ref(GlobalValue.cityId)
    private Long cityId;

    /**
     * 城市名称
     */
    @ApiModelProperty("城市名称")
    private String cityName;

    /**
     * provinceId
     **/
    @ApiModelProperty("provinceId")
    private Long provinceId;

    /**
     * 省份名称
     */
    @ApiModelProperty("省份名称")
    private String provinceName;

    /**
     * districtId
     **/
    @ApiModelProperty("districtId")
    private Long districtId;

    /**
     * 区域名称
     */
    @ApiModelProperty("区域名称")
    private String districtName;

    /**
     * 收货地址类别
     */
    @ApiModelProperty("收货地址类别")
    private AddressTypes addressType = AddressTypes.other;

    /**
     * 是否是临时收货地址
     */
    @ApiModelProperty("是否是临时收货地址")
    private AddressTypes tempAddress = AddressTypes.NOLABEL;

    /**
     * 关联会员详情Member对象
     */
    @ApiModelProperty(value = "用户ID" , required = true)
    @Ref(GlobalValue.memberId)
    private Long memberId;

    /**
     * 性别
     */
    @ApiModelProperty("性别")
    private SexTypes sexType = SexTypes.secret;

    /**
     * 收货时间段
     */
    @ApiModelProperty("收货时间段")
    private String time;

    /**
     * 关联会员地址标签 标签编号
     */
    @ApiModelProperty("关联会员地址标签id 标签编号")
    private Long memberrAddressLabelId;

    /** 标签名称 */
    private String labelName;

    /** 最后一次使用该地址 下订单的时间，用于返回地址时 辅助排序使用*/
    @ApiModelProperty("最后一次使用该地址 下订单的时间，用于返回地址时 辅助排序使用")
    private LocalDateTime lastOrderTime;

    /**
     * 距离
     */
    private Integer distance;

    /** 送货地址经度（相当于人的位置） */
    @ApiModelProperty("送货地址经度（相当于人的位置")
    private BigDecimal deliverLat;

    /** 送货地址纬度（相当于人的位置） */
    @ApiModelProperty("送货地址纬度（相当于人的位置")
    private BigDecimal deliverLon;

}
